package com.jiangruan.javaApiProject.utils;

import org.bouncycastle.jce.provider.BouncyCastleProvider;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.Security;

/**
 * @Author 默
 * @Date 2021/12/23
 * @Time 9:22
 * @desc该类用于封装各种类型的hash算法
 * @Description
 */
public class Hash {

    /**
     * 该方法用于对给定的数据进行sha256哈希计算，冰粉粉哈希结果
     * @param data 特点的数据
     * @return 哈希值
     */
    public static byte[] SHA256(byte[] data){
        //md: message diggest, 信息摘要， 消息摘要
        MessageDigest instance = null;
        try {
            instance = MessageDigest.getInstance("SHA-256");
            instance.update(data);
            return instance.digest();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 该方法用于实现RIPEMD160哈希算法，并返回结果
     * @param data 要进行哈希计算的数据
     * @return 哈希值
     */
    public static byte[] RipeMD160(byte[] data){
        //provider：提供者
        Security.addProvider(new BouncyCastleProvider());
        try {
            MessageDigest digest = MessageDigest.getInstance("RipeMD160");
            digest.update(data);
            return digest.digest();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

return null;
    }
}
